1. Field of the Invention
The present invention relates generally to an improved data processing system. More specifically, the present invention is directed to a computer implemented method, system, and computer usable program code for handling server failover in a distributed network environment that utilizes session affinity.
2. Description of the Related Art
Today, most computers are connected to some type of network. A network allows a computer to share information with other computer systems. The Internet is one example of a computer network. The Internet is a global network of computers and networks joined together by means of gateways that handle data transfer and the conversion of messages from a protocol of the sending network to a protocol used by the receiving network. On the Internet, any computer may communicate with any other computer with information traveling over the Internet through a variety of languages, also referred to as protocols. Typically, the Internet uses a set of protocols called Transmission Control Protocol/Internet Protocol (TCP/IP).
A large number of emerging Internet applications require information dissemination across different organizational boundaries, heterogeneous platforms, and a large, dynamic population of publishers and subscribers. A publish-subscribe (pub-sub) network service is a communication infrastructure that enables information dissemination across a potentially unlimited number of publishers and subscribers. A pub-sub system is often implemented as a collection of spatially disparate nodes communicating on top of a peer-to-peer overlay network.
In such an environment, publishers publish information in the form of events and subscribers have the ability to express their interests in an event or a pattern of events by sending subscription filters to the pub-sub network. The pub-sub network uses content-based routing schemes to dynamically match each publication against all active subscriptions, and notifies the subscribers of an event if and only if the event matches their registered interest.
A converged service is an application that spans communication over multiple network protocols and protocol sessions to provide higher level function. In the case of the hypertext transfer protocol (HTTP) and session initiation protocol (SIP), a converged service joins together session information from both the HTTP and SIP protocols, allowing interactions over one protocol to influence communication over the other, subject to the constraints of the protocol. A converged service may span multiple protocol sessions from across each of these protocols.
In order to simplify structuring of code and high availability services, a mechanism called session affinity is used in conjunction with converged services. Session affinity is a mechanism in a clustered environment for associating requests within the session with a particular server within a cluster of servers. This association is accomplished via a routing mechanism that maps sessions to managing servers. When using session affinity with converged services, converged session data may live in a single application server instance within the lifetime of a session, avoiding the need for application code to perform inter-cluster communication when processing requests related to a converged session.
However, many converged applications also require accessing and manipulating common resources or data structures across multiple converged sessions. Even with session affinity, these converged sessions may be assigned to different server instances within a cluster. As a result, a method is needed for notifying all converged sessions of common information relevant to those sessions, regardless of the location of the interested sessions in the cluster. For example, consider a three-server clustered environment that includes servers A, B, and C. A subscription is set up for notifications about an application resource on server A and server C. A publish request comes in and is directed to server B. Server B does not know which server in the cluster contains the interested subscription sessions. Server B must be able to reliably broadcast the subscription data. In addition, when server B fails, it is unknown where sessions managed by server B will be reactivated within the cluster.
Therefore, it would be beneficial to have an improved computer implemented method, system, and computer usable program code for managing server failover in a pub-sub distributed network environment that utilizes session affinity.